package kgame5.kgu {
import kgame5.k3d.core.math.Vector3D;
import kgame5.kmath.MathDG;

/**
 * @author kangkai
 * 导弹飞行中的姿势控制，自动的
 * 只支持四个方向上下左右
 * 
 * 注意这里的-90是校正用的，因为导弹模型是炮口方向向上
 */
public class MissilePostureControllor {
//	public static function PostureControl(md:HardVO){
//		if(md.v3d_v.x==0 &&md.v3d_v.z==0){//不控制
//			md.v3d_r.fill(0,0,0);
//		}else if(md.v3d_v.z==0){//x方向飞行
//			md.v3d_r.z=MathDG.AAA2(md.v3d_v.x,md.v3d_v.y)-90;
//		}else if(md.v3d_v.x==0){//z方向飞行
//			md.v3d_r.x=90-MathDG.AAA2(md.v3d_v.z,md.v3d_v.y);
//		}
//		//T.p("计算得到的导弹的姿势为："+md.v3d_r);
//	}
	
	//速度，md_rotY是负责在xoz平面旋转的，md_rotX是炮弹在自身坐标系旋转的
	public static function PostureControl(v3d_v:Vector3D,v3d_rotXOZ:Vector3D,v3d_rotYOZ:Vector3D){
		//XOZ平面的旋转
		v3d_rotXOZ.y=MathDG.AAA2(v3d_v.z,v3d_v.x);
		
		//自身坐标系的旋转
		var vxoz:int=Math.sqrt(v3d_v.x*v3d_v.x+v3d_v.z*v3d_v.z);
		var vy:int=v3d_v.y;
		var rotYOZ:int=MathDG.AAA2(vy,vxoz);
		v3d_rotYOZ.x=rotYOZ;
//		T.p("计算炮弹姿势");
//		T.p(v3d_v);
//		T.p(rotX);
	}
	
	//速度，md_rotY是负责在xoz平面旋转的，md_rotX是炮弹在自身坐标系旋转的
	public static function PostureControlYaw(v3d_v:Vector3D):int{
		//XOZ平面的旋转
		return MathDG.AAA2(v3d_v.z,v3d_v.x);
		
		
	}
	//速度，md_rotY是负责在xoz平面旋转的，md_rotX是炮弹在自身坐标系旋转的
	public static function PostureControlPitch(v3d_v:Vector3D):int{
		//自身坐标系的旋转
		var vxoz:int=Math.sqrt(v3d_v.x*v3d_v.x+v3d_v.z*v3d_v.z);
		var vy:int=v3d_v.y;
		var rotYOZ:int=MathDG.AAA2(vy,vxoz);
		
		return rotYOZ;
	}
}
}